The present invention relates to data center infrastructure, and more particularly, this invention relates to processing overlay traffic on network interface cards which are capable of bridging overlay and non-overlay networks.
Network virtualization is an emerging data center and cloud computing trend which aims to virtualize a network as seen by end stations in a way that greatly simplifies network provisioning in multi-tenant environments, as well as traditional environments. One of the more common techniques of achieving network virtualization is to use network overlays, where tunnels are established between servers, edge network switches, and gateways to which end stations connect. The tunnel is actually implemented by encapsulating packets transmitted by a source end station into an overlay header that transports the packet from the source switch to a target switch in user datagram protocol (UDP) transport via an internet protocol (IP)-based network. The overlay header includes an identifier (ID) that uniquely identifies the virtual network. The target switch (tunnel end point) strips off the overlay header encapsulation, UDP transport header, and IP header, and delivers the original packet to the destination end station via conventional network connections. In addition to this tunneling mechanism, the edge switches participate in an address discovery protocol, which may be learning/flooding based, or lookup-based.
Overlay networks like Virtual eXtensible Local Area Network (VXLAN) connect geographically separated Layer-2 (L2) networks using tunnels. These are L2 over Layer-3 (L3) tunnels. L2 packets originated by a virtual machine (VM) in a VXLAN and destined to another VM or group of VMs in same VXLAN in another physical location are carried over L3 tunnels.
An overlay network may be implemented using a number of VMs with a virtualization platform controlling the processing of networking packets in and out of each VM and one or more VMs may be associated with the overlay network. A virtualization platform processes the networking traffic associated with each overlay network and/or VM using predefined properties and policies for the corresponding overlay network and/or VM. As the number of overlay networks increases, so does the processing load requirements of the virtualization platform. The processing load requirements of the virtualization platform include a number of tunnels terminated, management of Virtual Tunnel End Points (VTEPs), address learning per tunnel, packet encapsulation and de-capsulation per tunnel, etc. Therefore, for a given performance level of a network, the number of overlay networks or VMs is limited by the virtualization platform's processing capabilities. Therefore, there is a need to increase the performance of a virtualization platform without increasing the physical resources available that are used by the virtualization platform in order to continue to expand the use of overlay networks.
Another issue with overlay networks is attempting to provide support for each virtualization platform's specific implementation requirements. Each virtualization platform, e.g., VMware's Hypervisor, Microsoft's Hyper-V, KVM, etc., requires separate implementation for the overlay network. One problem with current approaches of embedding overlay network mechanisms into virtualization platforms is that issues with performance are created and different standards are necessitated for different virtualization platforms. It also complicates the functionality of overlay networks and adds barriers to interoperability between network virtualization domains on various virtualization platforms.